package com.weipu.common.facade;

import com.weipu.common.facade.exception.DxException;
import com.weipu.common.facade.model.AddressModel;
import com.weipu.common.facade.model.CreditCardInfo;
import com.weipu.common.facade.model.CreditCardModel;
import com.weipu.common.facade.model.CreditCardPayRespose;
import com.weipu.common.facade.model.OrderModel;

public interface CreditCardServiceProvider {
	/**
	 * 获取信用卡列表信息
	 * 
	 * @param customerId
	 *            用户唯一标识
	 * @param token
	 *            安全验证用户唯一Token
	 * @param isNormal
	 *            是否获取正常状态的信用卡（true为Normal false 为Normal,Expired状态）
	 * @param pageIndex
	 *            列表下表
	 * @param PageSize
	 *            每页显示信用卡
	 * @return
	 */
	CreditCardInfo getCreditCardInfos(long customerId, String token,
			boolean isNormal, int pageIndex, int pageSize) throws DxException;

	String getCreditType(long customerId, String token, String cardNumber,
			boolean IsSecPay) throws DxException;

	/**
	 * 信用卡支付
	 * 
	 * @param cicid
	 *            用户ID
	 * @param token
	 *            用户安全校验Token
	 * @param orderNumber
	 *            订单号
	 * @param billingAddress
	 *            账单地址
	 * @param usePastCard
	 *           True-使用以前的保存的信用卡、False-输入完整的卡号来支付
	 * @param isRememberCard
	 *           当UsePastCard =false时有效。True-记住卡号。False-不记卡号。
	 * @param creditCard
	 *            信用卡信息
	 * @param CreditCardToken
	 *            信用卡ID或Token信息。当UsePastCard =true时不可为空。
	 * @param email
	 *            用户邮箱
	 * @return 订单号
	 */
	CreditCardPayRespose doCreditCardCheckout(String cicid, String token, String orderNumber,
			AddressModel.Address billingAddress,boolean usePastCard,boolean isRememberCard, 
			CreditCardModel creditCard,CreditCardModel creditCardToken,String email)
			throws DxException;

	/**
	 * 删除绑定信用卡
	 * 
	 * @param CreditCardID
	 *            信用卡ID
	 * @param Token
	 *            用户校验Token
	 */
	void deleteCreditCard(String creditCardID,int customerID, String token) throws DxException;
}
